/**
 * 
 */
package fr.univ_tln.inf9.exaplanning.api.salle;

import javax.swing.event.EventListenerList;

import fr.univ_tln.inf9.exaplanning.api.salle.event.TypeMaterialChangedEvent;
import fr.univ_tln.inf9.exaplanning.api.salle.event.TypeMaterialListener;
import fr.univ_tln.inf9.exaplanning.api.utilisateur.event.FirstNameChangedEvent;
import fr.univ_tln.inf9.exaplanning.api.utilisateur.event.FirstNameListener;
import fr.univ_tln.inf9.exaplanning.api.utilisateur.event.MailChangedEvent;
import fr.univ_tln.inf9.exaplanning.api.utilisateur.event.MailListener;
import fr.univ_tln.inf9.exaplanning.api.utilisateur.event.NameChangedEvent;
import fr.univ_tln.inf9.exaplanning.api.utilisateur.event.NameListener;

/**
 * @author pivi
 *
 */
public class Material {
	
	//private final int id;
	private String type;
	
	private EventListenerList listeners;
	
	


	/**
	 * @param id => numéro de référence
	 * @param type => l'objet lui-même
	 */
	public Material(/*int id,*/ String type) {
		super();
		//this.id = id;
		this.type = type;
		
		listeners = new EventListenerList();
	}

	
	/**
	 * @return the id
	 */
	/*public int getId() {
		return id;
	}*/


	/**
	 * @return the type
	 */
	public String getType() {
		return type;
	}

	/**
	 * @param type the type to set
	 * 
	 * si le type de matériel change on le stipule par le fireTypeChanged()
	 */
	public void setType(String type) {
		this.type = type;
		
		fireTypeChanged();
	}
	
	
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Material [type=" + type + "]";
	}
	
	/****************************************************************************************************************/
	/****************************************			LISTENER				*************************************/
	/****************************************************************************************************************/

	public void addTypeListener(TypeMaterialListener listener){
		listeners.add(TypeMaterialListener.class, listener);
	}
	
	public void removeTypeListener(TypeMaterialListener l){
		 listeners.remove(TypeMaterialListener.class, l);
	}
	
	
	/****************************************************************************************************************/
	/****************************************		Fire définition				*************************************/
	/****************************************************************************************************************/
	
	private void fireTypeChanged() {
		TypeMaterialListener[] listenerList = (TypeMaterialListener[])listeners.getListeners(TypeMaterialListener.class);
		
		for(TypeMaterialListener listener : listenerList){
			listener.TypeChanged(new TypeMaterialChangedEvent(this, getType()));
		}
		
	}
	

}
